草庐IT

c++ - 池化线程的 SetThreadAffinityMask

全部标签

windows - 使用 Windows 线程时,是否可以指定一个缓冲区用于线程的堆栈,类似于 pthread_attr_setstack()?

pthreads允许用户提供一block内存用于线程堆栈:size_tstack_size=1024*1024*4;void*stack=malloc(stack_size);pthread_attr_tattributes;pthread_attr_init(&attributes);pthread_attr_setstack(&attributes,stack,stack_size);pthread_tthread_id;pthread_create(&thread_id,&attributes,worker_function,NULLWindows线程是否提供类似的功能?Crea

c - 如何在静态控件中画线?

我想在静态控件中画一条线:caseWM_CREATE:{hgraph=CreateWindow(WC_STATIC,NULL,WS_CHILD|WS_VISIBLE|SS_CENTER,20,20,660,80,hWnd,NULL,NULL,NULL);SendMessage(hgraph,WM_SETTEXT,NULL,(LPARAM)"MyStatic");break;}caseWM_PAINT:{hdc=GetDC(hgraph);hp=CreatePen(0,5,RGB(0,100,0));SelectObject(hdc,hp);MoveToEx(hdc,0,0,0);Lin

windows - x64下的线程信息 block

我需要从x64平台上的TIB获取最大和最小堆栈(我知道我需要用GS寄存器替换FS寄存器。)在x86平台上我可以使用thistable并找到正确的偏移量你知道我在哪里可以找到x64平台的表格吗? 最佳答案 这是一个适用于x86和x64的程序。#include#includevoidmain(){PNT_TIBptib=(PNT_TIB)NtCurrentTeb();#ifdef_AMD64_printf("Stackbase:%08I64X,limit:%08I64X\n",ptib->StackBase,ptib->StackLim

c - 为什么DDK可以成功编译一个无效的源文件?

首先,你可以通过DDKbuildutility成功编译如下main.c。#includeNTSTATUSDriverEntry(PDRIVER_OBJECT,PUNICODE_STRING){try{leave;}except(1){}return0;}但是,请注意:“leave”和“except”都不是有效的C语言关键字。我知道__leave和__except(即带有双前导下划线)都是微软特定的关键字来扩展C语言,但“leave”和“except”不是。我还确认“leave”和“except”不是由宏定义的。MSDN对此没有任何解释。谁能给我解释一下?提前致谢。

c - 我的应用程序中的 ANSI C : how can I include and then extract . exe 文件(将 .exe 打包成 .exe)?

我正在编写一个创建Windows服务的程序。所以我需要两个.exe文件——一个用于程序,创建服务,另一个用于服务本身。但是我想将这两个文件合二为一。我有以下想法-打开.exe文件,我想在文本编辑器中打包(服务应用程序),然后将其内容复制到某个字符串。然后我需要在所需目录中创建一个空的.exe文件并将字符串写入该文件。但我想这不是一个好主意。解决我的问题的最佳方法是什么?提前致谢。 最佳答案 为了好玩,我写了一个使用您的方法的“启动器”程序。它有效,我使用zoomin.exe作为有效载荷对其进行了测试。创建启动器可执行文件后,在Not

c++ - 如何让 WNDCLASS 将位图图像作为背景?

我在我的位图中填写了WNDCLASS和hbrBackground属性wc.hbrBackground=CreatePatternBrush(LoadBitmap(hInstance,MAKEINTRESOURCE("grey-texture.bmp")));这似乎根本没有改变,窗口是白色的,就像默认设置一样,所以我需要找出这里发生了什么。CreatePatternBrush不是用于此类事情的正确函数吗?不可以这样吗?hbrBackground=fromimagefile(stringbitmap,booltile); 最佳答案 请参

c++ - msvcrt.dll 和 pcre 库出错

我写了一个C程序,在Windows7和Linux上运行良好,但是当我在WindowsXP上执行它时出现错误:"_except_handler4_commoncouldnotbelocatedinthedynamiclinklibrarymsvcrt.dll"我研究了一下,有人说要删除我没有的DLL“dwmapi.dll”,所以这不是我的问题。有人告诉我使用dependswalker(depends.exe)来查找谁在使用msvcrt.dll。我做了,发现pcre库正在使用它,实际上它有问题,但我不知道如何解决这个问题。谁能帮帮我?这是沃克给我看的图片: 最佳

c++ - 关于交叉编译的查询,从 Windows 到 Linux,从 Linux 到 Windows,

我正在开发一个使用ffmpeg库的C项目。目前我在windows平台上工作,我将为LinuxARM交叉编译该项目。有了这样的背景,我几乎没有什么基本问题。如果我使用ANSIC++,我可以肯定,我将能够使用相应的编译器交叉编译项目[MSVC,MingW]但是..如果我在项目中使用“Win32”和其他“Windows”特定API,交叉编译器将如何处理它,以使项目能够在Linux上运行。同样,如果我在项目中使用Linux特定的“功能”,交叉编译器将如何处理它,以使项目能够在Windows上运行。 最佳答案 当您交叉编译时,被交叉编译的代码

c++ - 确定进程的输入线程 ID

有谁知道确定进程输入线程的方法吗?场景是我想调用GetKeyboardLayout,从一个单独的应用程序(可以是任何程序)中传入输入线程ID。每个线程都可以有自己的键盘输入语言集,但是为另一个进程找出合适的输入线程ID似乎是不可能的事情。例如,我创建了一个函数,我将记事本的进程ID传递给该函数,该函数在内部确定输入线程ID并从GetKeyboardLayout返回值。此函数的调用者随后会在屏幕上显示为记事本选择的输入语言。你们这些好人有什么想法吗? 最佳答案 Windows不要求进程具有与用户交互的特定线程。它不一定是进程的启动线程

c - 如何创建包含 32 位和 64 位二进制文​​件并在操作系统上运行它们的应用程序?

我做了一个应用程序,我必须编译它的32位和64位版本。我看到一些应用程序,例如ProcessExplorer,其作用如下。在32位操作系统上,它运行一个32位应用程序,但在64位操作系统上,它提取同一exe的64位版本,这将被执行。那么我怎样才能从我的应用程序中制作这样的应用程序呢?我应该在VisualStudio中进行哪些设置? 最佳答案 Processexplorer的工作方式如下:您下载一个32位可执行文件。当您在32位操作系统上运行该可执行文件时,就是这样。当您在64位操作系统上运行该可执行文件时,32位进程会在启动时检测到